#数据解析原理：（1）使用标签定位（2）提取标签的属性值
#美丽的汤库：（1）实例化一个BeautifulSoup对象，将页面的内容加载到这个对象中（2）通过调用对象的属性、标签定位等方法进行数据提取
# 安装bs4:pip install bs4

# 实例化BeautifulSoup对象：
from bs4 import BeautifulSoup

# 对象的实例化
#（1）本地文件：soup = BeautifulSoup(open('文件'，encoding='utf-8'),'lxml')
# (2)服务器响应文件：soup = BeautifulSoup(r.text,'lxml')

soup = BeautifulSoup(open('1.html',encoding='utf-8'),'lxml')

# 语法
# 标签定位
#soup.标签名
# print(soup.a)# 返回的是第一个a标签
# print(soup.a.attrs) # 返回第一个a标签的属性属性值


# bs4的一些函数
# （1）find
# print(soup.find('a'))#=print(soup.a) 返回第一个a标签
# 找到属性title = "百度"的a标签
# print(soup.find('a',title='百度'))
# 找到属性class="a2"的a标签,class是关键字
# print(soup.find('a',class_="a2"))

#(2)find_all：返回的是列表对象
#soup.find_all(标签)
# print(soup.find_all('a'))  # 找到所有的a标签
#soup.find_all([标签1,标签2])
# print(soup.find_all(['a','span']))#想获取多个标签的内容，将标签添加到列表
# print(soup.find_all('li'))
# 就想找到前两个li标签,limit= 帮我们找到前几个li标签
# print(soup.find_all('li',limit=3))

#(3)select函数（推荐）
#select(标签)
# print(soup.select('li'))# 所有标签，还是列表
#属性选择器；
# select('标签[属性]')：找到有。。属性的。。标签
# print(soup.select('li[id]')) # 列表
# 精确查找# select('标签[属性=“属性值”]')
# print(soup.select('li[id="冀A"]'))

#类选择器（class）"."表示class,这种叫类选择器
# print(soup.select('.a1'))
# print(soup.select('.a2'))
# print(soup.select('.a3'))
# 用"#"表示id属性
# print(soup.select('#冀A'))
# print(soup.select('#冀J'))
# print(soup.select('#xx班'))
# print(soup.select("#c3"))

# 层级选择器
# 后代选择器：找孙子 " "
# print(soup.select('div li'))
# 子代选择器：找儿子：“>”
# print(soup.select('div>ul>li'))

# 获取标签文本:<标签>内容</标签>：获取标签标记的内容：text
# print(soup.select('li')[0].text)
# print(soup.select('li')[1].text)
# print(soup.select('li')[2].text)
# print(soup.select('li')[3].text)

# 获取属性值：attrs['属性名']
# print(soup.select('a')[1].attrs['href'])
# print(soup.select('a')[1].attrs['title'])












